package com.nation.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by 凌 on 2017/11/7.
 */
public class ReadAndStoreFile {
    public static int byteLength = 1024;

//    上传的excel文件短暂存放的文件夹
    public static String EXCELTEMP="excelTemp";
    //    MP4视频上传
    public static String NATIONVIDEOS="nationVideos";
    //    重要文献数据
    public static String ImportantLiteratureData="importantLiteratureData";
    //    重要研究著作
    public static String TImportantResearchWork="importantResearchWork";
//    自然环境和资源图片路径
    public static String NATURE="nature";
    //    政治军事图片路径
    public static String POLITIC="politic";
    //    经济发展图片路径
    public static String ECONONNY="econonny";
    //    社会状况图片路径
    public static String SOCIETY="society";
    //    科技教育图片路径
    public static String TECHENOLOGY="techenology";
    //    侨情概况图片路径
    public static String OVERSEASCHINESE="overseasChinese";
//    国际关系
    public static String RELATIONSHIP="relationship";

    /*根据图片地址获取图片名称
    *@param path 图片的存储路径 */
    public static String getImgName(String imgUrl) {
        if (imgUrl == null) {
            return null;
        }
        System.out.println("00-------------------"+HandleZIP.SEPARATOR);
        String[] strs = imgUrl.split("/");

//        获取文件名加后缀名
        String imgNameAndType=strs[strs.length - 1];
        System.out.println("imgNameAndType=="+imgNameAndType);
//        获取不带后缀的文件名
        String imgName=imgNameAndType.substring(0,imgNameAndType.lastIndexOf("."));
        return imgName;
    }

    /*判断文件类型，即获取文件后缀名
    *@param path 文件的存储路径 */
    public static String getFileKind(String fileUrl) {
        if (fileUrl == null) {
            return null;
        }
        String[] strs = fileUrl.split("/");

//        获取文件名加后缀名
        String imgNameAndType=strs[strs.length - 1];
//        获取后缀
        String fileKind=imgNameAndType.substring(imgNameAndType.lastIndexOf("."));
        return fileKind;
    }

    /*获取压缩包名字
    *@param path 压缩包的存储路径 */
    public static String getZIPName(String path){
        if (path == null) {
            return null;
        }
        String[] strs = path.split("/");
        String ZIPName=strs[strs.length - 1];
        return ZIPName;
    }

    /*保存文件
    *@param file 上传的文件
    * @param realPath 文件存储的真实路径 */
    public static String save(MultipartFile file, String realPath) throws IOException {

        File uploadFile = new File(realPath);

        if (!uploadFile.exists()) {
            int i = 0;
            while (!uploadFile.mkdirs()) {
                i++;
                if (i > 100) {
                    throw new IOException("Failed to create dir");
                }
            }
        }

        String name = file.getOriginalFilename();

        String filePath = realPath+ HandleZIP.SEPARATOR + name;

        System.out.println("Path:" + filePath);
        System.out.println("Name:"+ name);

        //IO
        BufferedInputStream bis = new BufferedInputStream(file.getInputStream());
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        try {
            byte[] data = new byte[byteLength];

            while (bis.read(data, 0, byteLength) != -1) {
                bos.write(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            bis.close();
            bos.close();
        }
        return filePath;
    }

    /*删除文件
    * @param fileName 文件文件+名称
    * return boolean 是否删除成功
    * */
    public static boolean deletePic(String fileName){

        File file = new File(fileName);
        // 如果文件路径所对应的文件存在，并且是一个文件，则直接删除
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                System.out.println("删除单个文件" + fileName + "成功！");
                return true;
            } else {
                System.out.println("删除单个文件" + fileName + "失败！");
                return false;
            }
        } else {
            System.out.println("删除单个文件失败：" + fileName + "不存在！");
            return false;
        }
    }
//    获取录入的时间
    public static String getRecoderTime(){
        Date currentTime=new Date();
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        String recoderTime=simpleDateFormat.format(currentTime);
        return recoderTime;
    }


}
